           package com.java.diagnostics.visualizer.parser.javadump;
           
           import com.java.diagnostics.visualizer.data.SourceData;
           import com.java.diagnostics.visualizer.exceptions.GCAndMemoryVisualizerException;
           import com.java.diagnostics.visualizer.impl.factory.LogFactory;
           import com.java.diagnostics.visualizer.parser.vgc.VGCParser;
           import com.java.diagnostics.visualizer.properties.OutputProperties;
           import com.java.diagnostics.visualizer.sources.Source;
           import java.util.logging.Logger;
           
           public class JavaDumpParser
             implements VGCParser
           {
             private static final Logger TRACE = LogFactory.getTrace(JavaDumpParser.class);
           
             private final String className = getClass().getName();
             protected static final String GC_HISTORY = "1STGCHTYPE     GC History";
             protected static final String USER_ARG = "2CIUSERARG";
             private static final String[] IS_PARSEABLE_CRITERIA_STRINGS = { 
               "1STGCHTYPE     GC History", "2CIUSERARG" };
           
             public boolean isParseableSource(Source source)
               throws GCAndMemoryVisualizerException
             {
               TRACE.entering(this.className, "isParseableSource");
               boolean answer = source
                 .containsWithinReasonableDistanceOfStart(IS_PARSEABLE_CRITERIA_STRINGS);
               TRACE.exiting(this.className, "isParseableSource");
               return answer;
             }
           
             public SourceData parse(Source source, OutputProperties properties)
               throws GCAndMemoryVisualizerException
             {
               TRACE.entering(this.className, "parse");
           
               SourceData data = new InstanceJavaDumpParser()
                 .parse(source, properties);
               TRACE.exiting(this.className, "parse");
               return data;
             }
           }

